"""
项目配置文件
"""

import os
import logging
from openai import OpenAI

# --- 用户可配置参数 ---

# 要处理的视频 URL
VIDEO_URL = "https://www.youtube.com/watch?v=5OGFD9h_yVY&pp=ygUKZ2VtaW5pIGNsaQ%3D%3D"

# 目标翻译语言 (例如 "zh", "en")
TARGET_LANGUAGE = "zh"

# 工作目录，用于存放下载的视频和生成的文件 (使用绝对路径)
PACKAGE_ROOT = os.path.dirname(os.path.abspath(__file__))
PROJECT_ROOT = os.path.dirname(PACKAGE_ROOT)
WORK_DIR = os.path.join(PROJECT_ROOT, "video_demo")
TOKENS_DIR = os.path.join(PROJECT_ROOT, "tokens")

# 是否跳过知识卡片提取
SKIP_KNOWLEDGE_CARD_EXTRACTION = False

# 是否跳过章节信息生成
SKIP_CHAPTER_GENERATION = False

# 是否跳过摘要和关键词提取
SKIP_SUMMARY_AND_KEYWORDS_EXTRACTION = False

# 是否跳过字幕处理（自动识别、翻译、烧录）
SKIP_SUBTITLE_PROCESSING = False

# 是否直接使用原视频，不做任何额外处理
USE_ORIGINAL_VIDEO_UNMODIFIED = False


# --- Redis 缓存配置 ---

# Redis 服务器配置
REDIS_HOST = "localhost"
REDIS_PORT = 6379
REDIS_DB = 0
REDIS_DEFAULT_TTL = 600  # 默认缓存时间（秒）

# 是否启用Redis缓存
ENABLE_REDIS_CACHE = True


# --- API 和高级配置 ---

# OpenAI/DeepSeek/OpenRouter API 客户端初始化
# 从环境变量中读取 API Key
def initialize_llm_client():
    try:
        client = OpenAI(
            api_key=os.getenv("DEEPSEEK_API_KEY"),
            base_url="https://openrouter.ai/api/v1"
        )
        logging.info("LLM 客户端初始化成功。")
        return client
    except Exception as e:
        logging.warning(f"未能初始化 LLM 客户端: {e}。请检查 API Key 配置。")
        return None

LLM_CLIENT = initialize_llm_client()

# 字体路径 (用于视频合成)
# 在 macOS 上，通常需要指定一个包含中英文字符的字体
# 在其他系统上，可能需要修改此路径
FONT_PATH = "/System/Library/Fonts/PingFang.ttc"

# YouTube API 相关文件 (使用绝对路径)
YOUTUBE_API_SECRETS_FILE = os.path.join(TOKENS_DIR, "qian_client_secrets.json")
YOUTUBE_API_TOKEN_FILE = os.path.join(TOKENS_DIR, "qian_token.json")

# --- 日志配置 ---
LOG_DIR = os.path.join(PROJECT_ROOT, "logs")
LOG_FILE = os.path.join(LOG_DIR, "app.log")
LOG_LEVEL = logging.INFO

# 确保日志目录存在
os.makedirs(LOG_DIR, exist_ok=True)

# 配置日志
# 清除现有的handlers，确保重新配置
root_logger = logging.getLogger()
if root_logger.handlers:
    for handler in root_logger.handlers:
        root_logger.removeHandler(handler)

logging.basicConfig(
    level=LOG_LEVEL,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler(LOG_FILE),
        logging.StreamHandler()
    ],
    force=True  # Python 3.8+ 支持force参数强制重新配置
)
